package com.softeem.ints;

/**
 * 自动装箱和自动拆箱
 * 主要使用场景在:基本数据类型和它的封装类型进行转换的时候
 * 自动装箱:int  ------------valueOf(int n) ------------> Integer
 * 自动拆箱:Integer ---------intValue() ----------------> int
 */
public class Demo_06 {
    public static void main(String[] args) {
        //自动装箱
        //直接进行赋值没有问题:
        Integer x = 10;
        //底层做的事情:
        Integer y = Integer.valueOf(10);


        //自动拆箱:
        Integer m = 5;
        m = m + 10;

        Integer m1 = Integer.valueOf(5);
        m = Integer.valueOf(m1.intValue() + 10);

        //没有超过-128 ~ 127之间的范围,直接从缓存中拿过来使用的,地址是相同的
        Integer n1 = 100;
        Integer n2 = 100;
        System.out.println(n1 == n2);//true
        System.out.println(n1.equals(n2));//true

        //超过了范围,可以直接写但是底层进行新的对象创建,所以地址不同
        Integer n3 = 500;
        Integer n4 = 500;
        System.out.println(n3 == n4);//false
        System.out.println(n3.equals(n4));//true
    }
}
